package net.chathu.airgw.util 
{
	import flash.utils.ByteArray;
	/**
	 * ...
	 * @author ze
	 */
	public class ByteArrayUtil 
	{
		
		public function ByteArrayUtil() 
		{
			
		}
		
		public static function stringToByteArray(string:String):ByteArray
		{
			var bytearray:ByteArray = new ByteArray();
			bytearray.writeUTFBytes(string);
			return bytearray;
		}
		
		public static function stringToArray(string:String):Array
		{
			var bytearray:ByteArray = new ByteArray();
			bytearray.writeUTFBytes(string);
			var array:Array = new Array();
			
			bytearray.position = 0;
			var length:int = bytearray.bytesAvailable;
			for (var c:int = 0; c < length; c++)
			{
				array[c] = bytearray.readByte();
			}
			return array;
		}
		
		
		public static function byteArrayToArray(ba:ByteArray):Array
		{
			//trace("Str 2 ba ->" + ba.position);
			ba.position = 0;
			var length:int = ba.bytesAvailable;
			var arr:Array = new Array();
			for (var c:int = 0; c < length; c++)
			{
				arr[c] = ba.readByte();
			}
			return arr;
		}
		
		public static function convertParams(params:Array, zeroTail:Boolean = false):ByteArray
		{
			var bytearray:ByteArray = new ByteArray();
			
			for (var i:int = 0; i < params.length; i++)
			{
				var param:String;
				if (params[i] is String) {
					param = params[i];
				} else if (params[i] == null) {
					trace("ERROR: null param");
					param = "NULL";
				} else {
					param = (params[i]).toString();
				}
				
				bytearray.writeUTFBytes(param);
				
				if (i + 1 < params.length)
				{
					bytearray.writeByte(0);
				}
			}
			
			if ( zeroTail )
			{
				bytearray.writeByte(0);
			}
			return bytearray;
		}
		
	}

}